// pages/recommendSong/recommendSong.js
import PubSub from 'pubsub-js'
import request from '../../../utils/request'
import { setSongInfo, removeSongInfo, getSongInfo } from '../../../utils/localCache'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    month: '', // 月份
    day: '', // 天
    daySong: [], // 每日推荐歌
    index: null // 当前歌单播放歌曲的下标
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 初始化时间
    this.setData({ month: new Date().getMonth() + 1, day: new Date().getDate() })
    this.daySongList()

    //  订阅songDetail发布的type消息(自定义时事) msg指的是触发发布者的名字 data则是发送来的数据
    PubSub.subscribe('switchType', (msg, switchtype) => {
      let { daySong, index } = this.data
      // 判断是否为下一首
      if (switchtype === 'next') {
        index += 1;
        (index >= daySong.length) && (index = 0)
      } else {
        (index === 0) && (index = daySong.length);
        index -= 1

      }
      this.setData({ index })
      // 发布songDetail订阅的消息
      PubSub.publish('switchData', daySong[index])
    })
  },
  /**
   *  获取每日推荐歌曲
   *  
   */
  async daySongList() {
    const songList = await request('/recommend/songs')
    this.setData({ daySong: songList.data.dailySongs })
  },

  /**
   *  点击播放歌曲
   *  !!! 因为获取歌曲详情的api不好使 所以使用本地存储的方式传参，
   *      如果可以使用可以使用拼接字符串的方式传入歌曲的id
   */
  playSong(e) {
    //  判断本地存储的歌曲信息
    if (getSongInfo()) {
      removeSongInfo()
    }
    const { index, info } = e.currentTarget.dataset
    setSongInfo(info)
    this.setData({ index })
    wx.navigateTo({
      url: `/songPackage/pages/songDetail/songDetail`
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})